home *** CD-ROM | disk | FTP | other *** search
/ Light ROM 1 / LIGHT-ROM 1 (Amiga Library Services)(1994).iso / ffdisks / d972.lha / QuickFile / Documentation / QuickFile.doc < prev    next >
Text File  |  1993-12-25  |  56KB  |  1,560 lines

  1.  
  2.    QuickFile  v2.01   18 November 1993  by Alan Wigginton
  3.  
  4. ========= CONDITIONS OF USE ===========
  5.  
  6. QuickFile is not Public Domain, however it can be freely distributed
  7. provided all documentation and sample files are included unchanged. This
  8. version is fully functional, except that the 'About QuickFile' requester
  9. will be frequently displayed to remind you that it is unregistered.
  10.  
  11. I accept no liability for any loss or damage resulting from the use of
  12. this program.  Users must evaluate the program and decide its usefulness
  13. for their own purposes.
  14.  
  15. If you continue to use this program for more than one month, you should
  16. send $30 registration fee to:
  17.  
  18.           Alan Wigginton
  19.           23 Carissa St
  20.           Shailer Park, Queensland  4128.
  21.           AUSTRALIA
  22.  
  23. Overseas users - please do not send personal cheques. Please send either
  24. an international money order or an overseas bank draft in Australian
  25. Dollars drawn on an Australian bank. Any cash currency is also OK, however
  26. sending cash through the mail is at your risk.
  27.  
  28. I intend to develop the program further if enough interest is shown and
  29. would appreciate any constructive comments you may have, even if you
  30. decide not to register.  Enclosing a stamped self addressed envelope will
  31. ensure a personal reply.
  32.  
  33. ====== Benefits of Registration =============
  34.  
  35. Registration will entitle you to:
  36.  
  37.      -  A registered copy of the latest version of the program  with the
  38.         about requester display removed.
  39.      -  Free support and advice - slow mail only I'm afraid
  40.            (You are welcome to phone providing you pay the call charges)
  41.      -  Upgrades to future versions for a nominal cost.
  42.  
  43. Registration will also encourage me to continue to develop the program.
  44.  
  45. Please include the version number (from the about requester) of your
  46. copy. I would also be interested to know:
  47.  
  48.      -  Where you obtained your copy of the program
  49.      -  Your system configuration. Model, memory etc.
  50.      -  What you are using the program for.
  51.  
  52.  
  53. ========== COPYRIGHT NOTICES ============
  54.  
  55. Quickfile copyright 1992, 1993 by Alan Wigginton
  56.  
  57. I accept no liability for any loss or damage resulting from the use of
  58. this program.  Users must evaluate the program and decide its usefulness
  59. for their own purposes.
  60.  
  61.  
  62.  
  63. AmigaGuide, AmigaGuide.info, amigaguide.library, WDisplay, WDisplay.info
  64. (c) Copyright 1991-1993 Commodore-Amiga, Inc. All Rights Reserved.
  65. Reproduced and distributed under license from Commodore.
  66.  
  67. AMIGAGUIDE SOFTWARE IS PROVIDED "AS-IS" AND SUBJECT TO CHANGE;
  68. NO WARRANTIES ARE MADE. ALL USE IS AT YOUR OWN RISK. NO LIABILITY OR
  69. RESPONSIBILITY IS ASSUMED.
  70.  
  71.  
  72. =========== PROGRAM DESCRIPTION =================
  73.  
  74. QuickFile is simple but flexible, flat file database. It uses random
  75. access, with indexes for fast access to records. Files can be larger than
  76. available ram, but as much of the file as possible is kept in ram to
  77. reduce disk accesses. Features include:
  78.  
  79.     - Multiple indexes that are automatically maintained.
  80.     - Character, date, integer and floating point data types
  81.     - Up to 250 characters per field  and 250 fields per record.
  82.     - Form and list style displays and reports.
  83.     - Unlimited number of views of each file.
  84.     - Fast sorting with multiple sort keys supported
  85.     - Search operators include Like, Equal, Between, Sounds Like, Not Like
  86.       and Not Equal.
  87.     - Fields can be added, changed, or deleted at any time.
  88.     - Flexible export/import
  89.     - Flexible multi column label printing.
  90.     - Runs on WB1.3 or later and should be OK with 512K ram.
  91.  
  92. QuickFile is written in C and compiled with NorthC (Fish 384) from Steve
  93. Hawtin. Thanks for your efforts Steve.
  94.  
  95.  
  96. ============ QUICK START  ============
  97.  
  98. WARNING. QuickFile is a random access data base that buffers records in
  99.          memory. Failure to exit the program properly after updates are
  100.          made will result in lost updates.
  101. ALWAYS   exit the program before a reboot or power off.
  102. DO       backup your files regularly.  When backing up a database, make
  103.          sure you backup all files - definition, data and indexes.
  104.  
  105. It is strongly suggested that you copy QuickFile to a work disk before you
  106. try adding or updating records. The easiest way to do this is to drag the
  107. QuickFile drawer into another disk window.
  108.  
  109. Use the QFDefine program to define a new database or change an existing
  110. file definition.  Use the QuickFile program for all other functions.
  111.  
  112. The current view determines the display and print format.
  113.  
  114. The current index determines the sequence for displays and reports.
  115.  
  116. Sorting and Selecting create temporary indexes which are available until
  117. you close the file or explicitly drop them.
  118.  
  119. Two demonstration databases are provided. Click on one of these icons to
  120. start Quickfile and display the first record in the file.
  121.  
  122. It is a good idea to browse through this document to get a feel for the
  123. program before trying to do too much.
  124.  
  125. I recommend that you place each database in a separate drawer (directory)
  126. as a number of index and view files for different  databases can  be
  127. confusing. This also makes it easy to backup the database by simply
  128. dragging the drawer to a backup disk.
  129.  
  130.  
  131. ========= STARTING THE PROGRAM ===========
  132.  
  133. Starting from Workbench
  134.  
  135. QuickFile can be started from the WorkBench using the QuickFile icon or a
  136. project icon for a data base.
  137.  
  138. If you start QuickFile from a project, the file is opened and the first
  139. record is displayed.
  140.  
  141. If you start it from the program icon, a file requester is displayed for
  142. you to select the file you want to open.
  143.  
  144. Icons are not generated by the program. Sorry, but if you want them you
  145. will have to create them yourself.
  146.  
  147.  
  148. Starting from the Shell or CLI"
  149.  
  150. To start QuickFile from the CLI, type the program name followed by a file
  151. name (optional) as a parameter. For example
  152.  
  153.          QuickFile [data:addressbook]
  154.  
  155. If you include a filename, the file is opened and the first record is
  156. displayed.
  157.  
  158. If you do not give a file name, a file requester is displayed for you to
  159. select the file you want to open.
  160.  
  161.  
  162. =========== FILE REQUESTERS =============
  163.  
  164. QuickFile supports the following file requesters (in order of preference):
  165.  
  166.       The ASL requester (WB2) will be used if asl.library is in your
  167.       LIBS: directory.
  168.  
  169.       The ARP requester will be used if arp.library is in your LIBS:
  170.       directory.
  171.  
  172.       If you have neither, QuickFile will use a requester with simple
  173.       string gadgets for you to enter Drawer and File names.
  174.  
  175.    This file requester will be used whenever a file name is required.
  176.  
  177.  
  178. =========== MAIN WINDOW ===============
  179.  
  180. The main window title bar is used to display a status line and status
  181. messages.
  182.  
  183. The status line contains. the name of the current view, the name of the
  184. current index, the current record number and the total number of records.
  185.  
  186. A row of buttons is displayed across the bottom of the window to control
  187. frequently used functions.
  188.  
  189. Remaining functions are accessed via Menus.
  190.  
  191. The vertical scroll bar on the right hand side is used to move from record
  192. to record through the file.
  193.  
  194. The horizontal scroll bar at the bottom is used to display additional
  195. fields that do not fit in the window. This usage is the same for both form
  196. and list displays.
  197.  
  198.  
  199. ========== INDEXES =================
  200.  
  201. QuickFile uses indexes to sequence the records and to provide rapid access
  202. by key field value.
  203.  
  204. Searching an index is much faster than searching the whole file. Any
  205. record out of thousands can be located in seconds - under 1 second if the
  206. file is completely in ram, longer if records have to be retrieved from a
  207. floppy.
  208.  
  209. Each data base must have at least one index, and you can have a number of
  210. indexes, all of which are automatically maintained as you add, change and
  211. delete records.
  212.  
  213. The current index name is displayed in the title line. If other indexes
  214. are available you can choose them with Indexes item on the View menu.
  215.  
  216. Indexing has some overheads, but with QuickFile these are quite small. The
  217. downside is that its capacity is limited to relatively small files (like
  218. 10,000 to 20,000 records).
  219.  
  220.  
  221. =========== RANDOM ACCESS ===============
  222.  
  223. Random access means locating a record in a file directly using its offset
  224. from the start of the file, instead of reading sequentially through the
  225. file record by record until you find the one you want.
  226.  
  227. This means you don't have to read and write all of the file if you only
  228. want to update one record.
  229.  
  230. Random access is generally only a useful technique when combined with
  231. indexing. Without indexing you have to supply the number of the record you
  232. want, which isn't particularly useful.
  233.  
  234.  
  235. ============ ABOUT VIEWS =============
  236.  
  237. Views allow you to display data from a file in different ways. There are
  238. two basic types FORM and LIST.
  239.  
  240. A view may display only some of the fields from the file, and it may only
  241. show part of some fields.
  242.  
  243. Each view has its own field titles, positions and lengths, window size and
  244. report details. Once you have a view set out the way you want it, you can
  245. save it for future use.
  246.  
  247. The Define View requester is used to select or change the fields included
  248. in a view. The positions of fields on a form can be changed by dragging
  249. them around with the mouse.
  250.  
  251. When you open a file, QuickFile looks for a view called filename.VIEW and
  252. loads it. If it doesn't find it, it creates a default view in ram. To use
  253. your favourite view automatically, save it as filename.VIEW. A View is only
  254. saved if you explicitly save it, otherwise any changes to a view will be
  255. lost when you exit the program.
  256.  
  257. If you want to keep things simple and are happy with the default view, you
  258. need not define a view at all.
  259.  
  260. Views are typically used to print labels, export or import selected fields
  261. or print lists containing only selected fields.
  262.  
  263.  
  264. ============= EDITING KEYS ==============
  265.  
  266. Standard Amiga text gadgets are used for entering data. These provide the
  267. following editing keys:
  268.  
  269.    right Amiga-X      Erase all text in the gadget (as does Control-X)
  270.    right Amiga-Q      Restores the text that was present before you
  271.                           changed it.
  272.    Shift-left arrow   Moves the cursor to the beginning of the field.
  273.    Shift-right arrow  Moves the cursor to the end of the field.
  274.    Shift-Del          Erases all characters from the cursor to the end of
  275.                           the gadget.
  276.    Shift-Backspace    Erases all characters to the left of the cursor.
  277.  
  278. The ENTER key will normally move the cursor to the next field on the
  279. screen. If pressed on the last field, it will wrap around to the first
  280. field.
  281.  
  282.  
  283. ============== CHANGES SINCE VERSION 1.3 ==============
  284.  
  285.   - Now able to define views that can be saved and reloaded. Views specify
  286.     field title, position and length, window sizes and report details.
  287.  
  288.   - Position fields on the FORM display by dragging with the mouse.
  289.  
  290.   - Multi column label printing
  291.  
  292.   - Vastly improved searching
  293.  
  294.   - Descending as well as ascending order for sorting and indexing
  295.  
  296.   - Many minor improvements and bug fixes.
  297.  
  298.   - Preset export formats added and improved flexibility provided for
  299.     custom formats.
  300.  
  301. ================ FORM DISPLAY =====================
  302.  
  303. The FORM DISPLAY shows a single record per screen in the format specified
  304. by the current view.
  305.  
  306. This can display all details for a record. If there are more fields in the
  307. view than will fit in the window, the horizontal slider can be used to
  308. scroll the display.
  309.  
  310. The LIST button can be used to quickly change to a list display with the
  311. current view.
  312.  
  313. Field positions can be changed by dragging fields around the window with
  314. the mouse.  Note that the program does not stop you from positioning fields
  315. on top of other fields. This does no harm, but it does look odd.
  316.  
  317. To add or delete fields, change field titles or displayed lengths, press
  318. the VIEW button;
  319.  
  320.  
  321. ============== LIST DISPLAY ==================
  322.  
  323. The LIST display shows as many records as will fit in the window with a
  324. single line per record.
  325.  
  326. This allows you to display records in the context of the records before and
  327. after it.
  328.  
  329. If the records are wider than the window, the horizontal slider can be used
  330. to scroll left or right.
  331.  
  332. To update a record double click on it with the left mouse button
  333.  
  334. Before using the Modify or Delete buttons, select a record using a single
  335. press of the left mouse button.
  336.  
  337. If You use the Modify  without a record selected, the first record on the
  338. screen will be displayed for modification.
  339.  
  340. If you use the Delete button without selecting a record, you will get an
  341. error message.
  342.  
  343.  
  344. ================ MAIN REQUESTERS ====================
  345.  
  346. Define View Requester
  347.  
  348. The view requester is displayed when you select an option to define or
  349. change a view. If you selected New View, a new view called 'Unnamed' is
  350. displayed.
  351.  
  352. To change an existing view you press the VIEW button, or select VIEWS from
  353. the VIEW menu, highlight the view you want to change, then press the ALTER
  354. button.
  355.  
  356. The Define View requester contains the following elements
  357.  
  358. Name
  359.   This name identifies the view and is displayed in the view selection
  360.   list. The current view name is also displayed in the window title bar.
  361.  
  362. Available Fields List
  363.   This is a list of the fields in the current file. Clicking on a field
  364.   will add it to the current view.
  365.  
  366. Selected Fields List
  367.   This is a list of the fields in the current view. Clicking on a field in
  368.   this list will select it and display its name and length below the list
  369.   box. These can then be changed if required. The changes will only affect
  370.   the current view.
  371.  
  372.   If a field is highlighted, new fields will be added before the high-
  373.   lighted field, otherwise new fields will be added at the end of the
  374.   list. To remove highlighting click in the blank part of the box.
  375.  
  376. Type Button
  377.   This button toggles between Form and List to select the basic view type.
  378.  
  379. Field Names Button
  380.   This turns the display of field names on and off. Field names are
  381.   normally only turned off for printing labels.
  382.  
  383. Field Title String Gadget
  384.   You use this to change the field title for this view only. This is useful
  385.   for having a short title for a short field in the list display. The title
  386.   can be blank. This gadget is disabled unless one of the selected fields
  387.   is highlighted.
  388.  
  389. Length String Gadget
  390.   Changing this length allows you to have a display length different to the
  391.   file length. This can be useful for reducing field lengths on a list
  392.   display to fit in more fields. It can also be used to print an initial
  393.   instead of a first name on a mailing label. This gadget is disabled
  394.   unless one of the selected fields is highlighted.
  395.  
  396. IMPORTANT NOTE: You must press enter after changing either the field name
  397.   or length or your changes will be ignored.
  398.  
  399. Delete
  400.   The delete button will delete the highlighted field from the selected
  401.   fields list. No confirmation is asked - it is deleted immediately. This
  402.   gadget is disabled unless one of the selected fields is highlighted.
  403.  
  404. OK Button
  405.   Accepts the new or changed view
  406.  
  407. Cancel
  408.   Cancels any changes you have made.
  409.  
  410.  
  411.  
  412. === Define Index Requester ===
  413.  
  414. The Define Index requester is displayed when you are adding or changing an
  415. an index. A similar requester is used for defining a sort key.
  416.  
  417. It contains the following elements
  418.  
  419. Name
  420.   This name identifies the index and is displayed in the index selection
  421.   list and in the window title bar when the index is active. It is also
  422.   used to form the file name for the index.
  423.  
  424. Available Fields
  425.   This is a list of the fields defined in this file. Clicking on a field
  426.   will add it to the fields selected for this index.
  427.  
  428. Selected Fields
  429.   This is a list of the fields in the current index. The order of the
  430.   fields in this box determines their priority in the sort. The first field
  431.   is the primary key, the second will only be used for records where the
  432.   first keys are equal and so on.
  433.  
  434.   Clicking on a field in this list will select it and display its name
  435.   and length below the list box.
  436.  
  437.   If a field is highlighted, any new fields will be added before the
  438.   highlighted field, otherwise new fields will be added at the end. To
  439.   remove highlighting click in the blank part of the box.
  440.  
  441. Length
  442.   Changing this length allows you to index on part of a long field.
  443.  
  444.   IMPORTANT: YOU MUST PRESS ENTER OR RETURN AFTER CHANGING A LENGTH OR
  445.              YOUR CHANGES WILL BE IGNORED
  446.  
  447. Order
  448.   This toggles between A..Z and Z..A to select whether the index is to be
  449.   sorted into ascending or descending order.
  450.  
  451. Delete
  452.   The delete button will delete the highlighted field from the selected
  453.   fields list. No confirmation is asked - it is deleted immediately.
  454.  
  455. OK Button
  456.   Accepts the new or changed index
  457.  
  458. Cancel
  459.   Cancels any changes you have made.
  460.  
  461.  
  462.  
  463. ============== MAIN WINDOW GADGETS =================
  464.  
  465.  
  466. GoTo Button
  467.  
  468.     GoTo finds a record by key value using the current index. This makes
  469.     access extremely fast, even on large files.
  470.  
  471.     Only The key fields for the current index are displayed.
  472.  
  473.     You only need to enter enough of the key to identify the record you
  474.     want, but you must start at the beginning of the key - if you enter
  475.     only the second key field, you will go to the start of the file.
  476.  
  477.     Press RETURN on the last key field or click on the OK button to
  478.     perform the GoTo.
  479.  
  480.     If the key you enter does not exist, the followin record is displayed.
  481.     You can enter "SM" to position on the record for SMITH, which will be
  482.     followed by SMITHERS, SMITHFIELD etc.
  483.  
  484.  
  485. Insert Button
  486.  
  487.     Pressing the INSERT button displays a blank form for you to enter
  488.     values for a new record. Press RETURN on each field to move you to the
  489.     next field.
  490.  
  491.     Press the Copy button to copy the contents of the last record
  492.     displayed or added. This is useful if you are entering records with
  493.     similar values in some fields of each record. Warning - it replaces
  494.     anything you have keyed.
  495.  
  496.     Press Insert to store the details and clear the fields ready for the
  497.     next record.
  498.  
  499.     Press Cancel to return to Browse mode.  NB When Cancel is pressed any
  500.     values displayed on the screen will be lost.  Press Insert to insert
  501.     the record, then Cancel.
  502.  
  503.     You cannot insert a record that is completely blank.
  504.  
  505.     The vertical scroll gadget is disabled while you are in insert mode.
  506.  
  507.     The horizontal scroll gadget can be used to scroll the display and
  508.     access fields that do not fit in the window.
  509.  
  510. Modify Button
  511.  
  512.     Pressing the MODIFY button displays the current record for you to make
  513.     changes.
  514.  
  515.     Press RETURN to move to the next field.
  516.  
  517.     Press the Update button to store the changes.
  518.  
  519.     Press the Cancel button to keep the current values.
  520.  
  521.     The vertical scroll gadget is disabled while you are in insert mode.
  522.  
  523.     The horizontal scroll gadget can be used to scroll the display and
  524.     access fields that do not fit in the window.
  525.  
  526.  
  527. Delete Button
  528.  
  529.     Pressing the DELETE button displays a requester asking you to confirm
  530.     the deletion.
  531.  
  532.     Press OK to delete the record.
  533.  
  534.     Press Cancel if you really want to keep it.
  535.  
  536.     Once the record has been deleted you cannot get it back.
  537.  
  538.  
  539. List/Form Button
  540.  
  541.     The LIST button is displayed on the Form screen. It will change the
  542.     view to a List view.
  543.  
  544.     This is the same as selecting Views from the View menu, pressing the
  545.     Alter button and changing the type to List.
  546.  
  547.     The FORM button is displayed on the List screen. It will change the
  548.     view to a Form view.
  549.  
  550.     This is the same as selecting Views from the View menu, pressing the
  551.     Alter button and changing the type to Form.
  552.  
  553. View Button
  554.  
  555.     Pressing the VIEW button displays the Define View requester showing
  556.     the current view ready for your changes.
  557.  
  558.     This is a shortcut for selecting the View menu item, selecting a view
  559.     and pressing the Alter button.
  560.  
  561.  
  562. Slider Gadgets
  563.  
  564.   Scrolling is controlled by two slider type gadgets.
  565.  
  566.   Vertical Slider
  567.  
  568.    This controls movement through the file and works in the usual way.
  569.    Press the arrows to move one record at a time.
  570.    Click in the box to move one page at a time - for the form display this
  571.    is also one record at a time.
  572.    Drag the knob to move as far as you like.
  573.  
  574.  
  575.   Horizontal Slider
  576.  
  577.    If there are more fields than will fit in the current window, this
  578.    can be used to display the next group of fields. This works the same as
  579.    the vertical slider except that there are no arrows.
  580.  
  581.  
  582. ============= MENUS ======================
  583.  
  584. Project - Open
  585.  
  586.     Selecting the OPEN menu item brings up a file requester for you to
  587.     select the file to process.
  588.  
  589.     Always select the definition name - the one with no extension.
  590.  
  591.     If you select a file that is not a QuickFile definition, you will be
  592.     given a message saying that the definition cannot be found.
  593.  
  594.  
  595. Project - Save
  596.  
  597.     Selecting the SAVE menu item writes all updated blocks and indexes to
  598.     disk. You should use this periodically during a long update session.
  599.  
  600.  
  601. Project - Close
  602.  
  603.     Selecting the CLOSE menu item writes all updated records and indexes
  604.     to disk and closes the file but leaves the program running so you can
  605.     open another file.
  606.  
  607.  
  608. Project - Save As
  609.  
  610.     Selecting the SAVE AS menu item creates a new file from the currently
  611.     open file.  If the current index is a selection, only the selected
  612.     records are written to the new file.
  613.  
  614.     A file requester is displayed for you to enter the new file name. It
  615.     is best to create this in a different drawer.
  616.  
  617.     The new file is reorganised as it is written. Indexes for the new file
  618.     are not created - they will be built when you first open the new file.
  619.  
  620.     When the file has been created, a requester is displayed to ask if you
  621.     want to open the newly created file or continue with the file
  622.     currently open.
  623.  
  624. Project - Reorganise
  625.  
  626.     This reorganises a file by creating a new reorganised version and then
  627.     copying that version over the original file.
  628.  
  629.     Reorganising is not essential, but if you have been doing many
  630.     additions and deletions, it may reduce file size and will improve
  631.     performance.
  632.  
  633.     During reorganisation free space is adjusted to the value specified in
  634.     the file definition and records are physically stored in the sequence
  635.     of the active key. Select your most used key sequence before
  636.     reorganising to optimise access with that key.
  637.  
  638.     You are not allowed to reorganise using a selection of records.
  639.  
  640.     The file requester will be displayed for you to enter a name for the
  641.     work file required. This should be  in a different drawer to the main
  642.     file. It is not automatically deleted and may be kept as a back up if
  643.     you like.
  644.  
  645.  
  646. Project - Exit
  647.  
  648.     Selecting the EXIT menu item writes all updated records and indexes to
  649.     disk, closes the file and exits the program.
  650.  
  651.     Selecting the Close gadget on the screen has the same effect.
  652.  
  653.     A requester is displayed to confirm your choice.
  654.  
  655.     Note that you do not have the option of exiting the program without
  656.     saving the file. This is because records may be written back to the
  657.     file any time while you are running the program.
  658.  
  659.  
  660. View - Indexes
  661.  
  662.     Choosing the INDEXES menu item displays a requester showing a list of
  663.     indexes for you to choose from. If you have performed a sort or
  664.     selection, the list will include "Selected" and/or "Sorted".
  665.  
  666.     Double click on an index to use it, or click once to select it.
  667.  
  668.     When you change indexes, the same record is displayed but the file
  669.     will be in a new sequence. e.g. You can use this to find a book by a
  670.     particular author, then select the subject index to list all other
  671.     books on the same subject.
  672.  
  673.     Pressing the Drop Button removes the selected index from memory and
  674.     frees the space used. You can only drop the Selected or Sorted
  675.     indexes. To remove any permanent index use the QFDefine program.
  676.  
  677.  
  678. View - Views
  679.  
  680.     Selecting the VIEWS menu item displays a requester showing a list of
  681.     views for you to choose from. If you have not created or loaded any
  682.     views, you will have a single view called filename.VIEW.
  683.  
  684.     Double click on a view to use it, or click once to select it.
  685.  
  686.     Press the Alter button to bring up the Define View Requester to change
  687.     the view.
  688.  
  689.     Press the Drop button to drop the selected view. You cannot drop the
  690.     last view - you must have at least one loaded.
  691.  
  692.  
  693. View - New View
  694.  
  695.     Selecting the NEW VIEW menu item creates a new view called 'unnamed'
  696.     and displays it in the Define View requester.
  697.  
  698.  
  699. View - Load View
  700.  
  701.     Selecting the LOAD VIEW menu item brings up a file requester for you
  702.     to select a view to load.
  703.  
  704.     When you load a view, it becomes the current view and the display will
  705.     change accordingly.
  706.  
  707.     If fields have been deleted from the file definition, they will be
  708.     automatically dropped from the view.
  709.  
  710.     If field names have been changed or new fields added, they will appear
  711.     at the end of the view.
  712.  
  713.     The fields in the view and the file definition are associated by name.
  714.     If you load a view from another file, it will display only those
  715.     fields that are the same in both files.
  716.  
  717. View - Save View As
  718.  
  719.     Brings up a file requester for you to enter the file name for the
  720.     view. The current view name is displayed as a default.
  721.  
  722.     The default view for a file is named filename.VIEW, but a view can
  723.     have any name.
  724.  
  725.     Note that you are not reminded to save a changed view before you close
  726.     a file.
  727.  
  728.  
  729. Tools - Sort
  730.  
  731.     The Sort Requester is very similar to the index requester as a sort
  732.     effectively creates a temporary index that is updated automatically as
  733.     you add, delete and change records. The Sort index is discarded when
  734.     the file is closed, but until then you will not need to re-sort to
  735.     place changed or new records in the right sequence.
  736.  
  737.     See the Index Requester for details on specifying the sequence.
  738.  
  739.     If you request a sort while displaying selected records, only the
  740.     records in the selection are sorted.
  741.  
  742.     Date, integer and number fields are sorted correctly according to
  743.     their value, rather than their ASCII sequence.
  744.  
  745.     You can sort over as many fields as you like with a single sort.
  746.  
  747.     Press OK to start the sort, or Cancel if you have changed your mind.
  748.     Sorting is quite fast so you shouldn't have to wait long. A sort (over
  749.     one field) of the 1300 records on my largest file takes 22 seconds on
  750.     my standard A500.
  751.  
  752.     The sort technique used requires that all sort keys be resident in
  753.     memory, so record buffers are freed to increase the memory available
  754.     to the sort. You will notice that disk activity increases after a sort
  755.     as buffers are reloaded. If you are short of memory, it may help to
  756.     sort using less than the full length of long fields.
  757.  
  758.  
  759. Tools - Select
  760.  
  761.     A selection is a sub-set of the data base that matches specified
  762.     conditions. QuickFile searches through the whole data base looking for
  763.     records with fields matching requested values, and creates an index
  764.     containing these records. You can then browse, print, export or backup
  765.     the selected records.
  766.  
  767.     The selection is updated automatically for deletions and changes but
  768.     not additions. Records you add to the data base will not be added to
  769.     the selection.
  770.  
  771.     When displaying a selection, the title bar will show the number of
  772.     records selected. Don't panic, you haven't lost your file. The full
  773.     number will be displayed when you choose a full index again.
  774.  
  775.     The selected data will be in the same sequence as the current Index.
  776.     You can sort it into another sequence if required.  If the current
  777.     index is the result of a previous selection, only the selected records
  778.     are searched, which is much faster than searching the full file.
  779.  
  780.     You can use any number of criteria for a search, but the more you have
  781.     the slower the search will be.
  782.  
  783.     Two values can be specified for each item. The second value is
  784.     primarily for the Between operator, but it can be used to specify an
  785.     alternative value for the other operators.
  786.  
  787.  
  788.   Search Panel
  789.  
  790.     The Search Panel displays a list of search criteria with buttons for
  791.     inserting, modifying and deleting them.
  792.  
  793.     Clicking on the Insert or Modify will display the Search Details
  794.     requester for you to insert or modify the details.
  795.  
  796.     For insertions, if an item is selected, the new item will be inserted
  797.     before the selected item, otherwise it will be inserted at the end of
  798.     the list.
  799.  
  800.     Clicking on delete will bring up a requester for you to confirm the
  801.     deletion of the selected item.
  802.  
  803.     Search criteria linked with 'and' will select only records that match
  804.     all criteria, while search criteria linked with 'or' will select
  805.     records that match either criteria.
  806.  
  807.     'And' has higher precedence so criteria are formed into groups split
  808.     by 'or'. All criteria in a group must be satisfied for a record to be
  809.     selected, but a record will be selected if it matches any group. That
  810.     is confusing and is probably best explained with an example:
  811.  
  812.         Occupation equal   programmer
  813.     and location   equal   sydney
  814.     or  Occupation equal   programmer
  815.     and location   equal   canberra
  816.  
  817.     This will find all programmers who live in Sydney or Canberra. Note
  818.     that Occupation had to be repeated. The following would give all
  819.     programmers who live in Sydney and EVERBODY who lives in Canberra.
  820.  
  821.         Occupation equal   programmer
  822.     and location   equal   sydney
  823.     or  location   equal   canberra
  824.  
  825.     You can also do things like
  826.  
  827.         Name      like    john
  828.     and  Name      notlike smith
  829.  
  830.     which would find all persons named John, except those named John
  831.     Smith.
  832.  
  833.  
  834.     The Search Details requester contains the following items:
  835.  
  836.     Connector Button (AND or OR)
  837.         This toggles between AND and OR to specify how this search item is
  838.         combined with the previous one. It has no effect for the first
  839.         item.
  840.  
  841.     Available Fields List
  842.         This lists all the fields in the file for you to select the field
  843.         to search on. The current selection is displayed under the list.
  844.  
  845.     Comparison Operator
  846.         This determines the operator to be used for this search item. See
  847.         below for details,
  848.  
  849.     Value 1
  850.         This is the primary search value. It is always used. If you want
  851.         to search for empty fields leave this empty.
  852.  
  853.     Value 2
  854.         This is the secondary search value. Its primary use is with the
  855.         between operator but can be used to enter an second search value
  856.         for the other operators.
  857.  
  858.         Note that with Not Equal and Not Like, value 1 and value 2 are
  859.         joined by AND rather than OR. It will find all records except
  860.         those that contain value 1 or value 2. Using OR in this situation
  861.         would select every record.
  862.  
  863.  
  864.   Search Operators
  865.  
  866.     The operators available for searching are:
  867.  
  868.     Like
  869.         Matches fields that contain the search string anywhere within
  870.         them. eg "bit" would find "The Hobbit" and "Bitter Sweet".
  871.  
  872.     Equal
  873.         Matches a field only if it exactly equals the search value. Note
  874.         that case is not significant so that dog will match Dog or even
  875.         dOG.
  876.  
  877.     Between
  878.         Matches a field with a value equal to or between the specified
  879.         pair of values. This can also be used to perform a less than or
  880.         greater than search. e.g. 'between 41 and 999' is the same as
  881.         'greater than  40'.
  882.  
  883.     Sounds Like
  884.         Matches fields where the first word sounds like the search value.
  885.         This is really a bit of a gimmick as it is not very smart. It uses
  886.         a version of the old soundex technique which requires that you
  887.         know the first character, and has a number of other limitations.
  888.         It can be useful though. NOTE it only looks at the first word of
  889.         the field.
  890.  
  891.         Please don't write and tell me that it doesn't work with such and
  892.         such, unless you include a better (and compact) algorithm.
  893.  
  894.     Not Like
  895.         As for like but will only match records that do not contain the
  896.         search value.
  897.  
  898.     Not Equal
  899.         As for equal but will only match records that are not equal to the
  900.         search value.
  901.  
  902.  
  903.  
  904. Tools - Rebuild Index
  905.  
  906.     Selecting the Rebuild Index menu item Rebuilds the current index from
  907.     the data records.
  908.  
  909.     This can be used if the index and data files are inconsistent for some
  910.     reason (eg a system failure). The index is rebuilt from the data file.
  911.  
  912.     Try using this if the program is failing with a 'Block not found
  913.     message' or any messages to the effect that QuickFile could not find a
  914.     record it looked for.
  915.  
  916. Tools - Export
  917.  
  918.     Export Allows you to write all, or selected, records to an ASCII file
  919.     for exchanging data with other applications such as word processors,
  920.     other data bases etc.
  921.  
  922.     The order and length of the fields in the export file is determined by
  923.     the current view. Before doing the export, you may need to create a
  924.     new view to give the record layout you want.
  925.  
  926.     A requester is displayed for you to select the record format to be
  927.     used. A number of preset formats (see below) are provided or you can
  928.     tailor your own Record and field Separators by selecting the Custom
  929.     format.
  930.  
  931.     The headers button determines whether a header record containing the
  932.     field names is to be included at the start of the file.
  933.  
  934.     Pressing the OK Button displays a file requester is displayed for you
  935.     to specify the name of the export file .
  936.  
  937.     All records from the currently selected index will be written. If you
  938.     are displaying Selected records, only the selected records will be
  939.     written.
  940.  
  941. Preset Export/Import Formats"
  942.  
  943.    A number of preset formats are provided including the mailmerge formats
  944.    for a number of wordprocessors. You can choose from:
  945.  
  946.    Custom
  947.    This allows you to define your own format using predefined Separator
  948.    characters.
  949.  
  950.    "...",
  951.    This is a quote and comma delimited text file such as used for data for
  952.    BASIC programs.
  953.  
  954.    The following preset formats are available only for Export, not Import.
  955.  
  956.        Final Copy
  957.        Interword
  958.        KindWords 3
  959.        ProWrite
  960.        WordWorth
  961.  
  962.    Only the KindWords 3 version has been tested. If you have a problem with
  963.    any of them please send me a copy of the specification for the format
  964.    and, if possible, a sample file that works.
  965.  
  966.    If you require a format that is not included, let me know as I should be
  967.    able to include it very easily.
  968.  
  969. Field and Record Delimiters
  970.  
  971.    The Custom delimiter buttons work like cycle gadgets in that the
  972.    selection changes with each click. You can only select from the
  973.    predefined delimiter codes.
  974.  
  975.      Field Start
  976.      This is fairly obvious and is the character that marks the start of a
  977.      field.
  978.  
  979.      Field End
  980.      This marks the end of a field. It differs from the field separator in
  981.      that a separator does not appear after the last field in a record
  982.      while a field end character appears after every field.
  983.  
  984.      Field Separator
  985.      This separates each field in the record. It does not appear after the
  986.      last field in each record
  987.  
  988.      Record End
  989.      Marks the end of each record
  990.  
  991.     If Field Start is used, a Field End must also be used. If neither Field
  992.     End nor Field Separator is used, the records will be fixed length with
  993.     each field padded to its maximum length with spaces.
  994.  
  995.   Example 1   "field1","field2"{LF}
  996.  
  997.     This is a fairly common text file format and is defined by
  998.  
  999.       Field Start = "    (Quotation mark)
  1000.       Field End   = "    (Quotation mark)
  1001.       Field Sep   = ,    (Comma)
  1002.       Record End  = {LF} (Line Feed x'0A')
  1003.  
  1004.     Example 2   field1{TAB}field2{TAB}{LF}
  1005.  
  1006.       Field Start = None
  1007.       Field End   = {TAB}  (Tab character x'09')
  1008.       Field Sep   = None
  1009.       Record End  = {LF}   (Line Feed x'0A')
  1010.  
  1011.  The available characters are:
  1012.  
  1013.       LF       Line Feed. This is the standard Amiga end of line character.
  1014.  
  1015.       TAB      Fields are separated by a TAB character.
  1016.  
  1017.       CRLF     This is the MSDOS style end of line character; a carriage
  1018.                return followed by a line feed.
  1019.  
  1020.       NONE     No character used
  1021.  
  1022.       '        Single quotation mark
  1023.  
  1024.       "        Double quotation mark
  1025.  
  1026.     Do not use the same character as a field and record separator for
  1027.     import.
  1028.  
  1029.     If you have a choice, use TAB for field separator, and LF for record
  1030.     separator, or use the "...", preset.
  1031.  
  1032.  
  1033. Tools - Import
  1034.  
  1035.     Import works in a similar way to Export, except records are loaded
  1036.     from an ASCII file into your data base.
  1037.  
  1038.     The sequence and length of fields in the input file are determined
  1039.     from the current view. You should create and select the view before
  1040.     selecting the import function.
  1041.  
  1042.     Both sequence and length can be different from that in the database.
  1043.     Also, not all database fields need to be present in the ASCII file.
  1044.     Any fields not present will be set to blank in your data base.
  1045.  
  1046.     Record and Field separators are the same as for export.
  1047.  
  1048.     NB: It is vital that the sequence and number of fields you set in the
  1049.     selected fields box of the field selector correspond to the sequence
  1050.     of fields in the ASCII file you are importing.
  1051.  
  1052.     Make you sure to backup your database before you import a file into an
  1053.     existing data base. If you get the format wrong, it is easier to
  1054.     restore than to fix or delete all of the incorrect records.
  1055.  
  1056.     Also use plenty of buffers if you are going to import a large number
  1057.     of records.
  1058.  
  1059.        Example:
  1060.  
  1061.            Data Base
  1062.                 Surname       40
  1063.                 First Names   40
  1064.                 Street        30
  1065.                 Suburb        30
  1066.                 Postcode      10
  1067.                 Date of Birth 11
  1068.  
  1069.            ASCII File record example
  1070.  
  1071.                "Alan","Wigginton"
  1072.                "William","Smith"
  1073.  
  1074.            This will work correctly provided you ensure that you set up a
  1075.            view in the sequence that they are in the ASCII file.
  1076.            The Import field selector should show the selected fields as:-
  1077.  
  1078.              First Name          40
  1079.              Surname             40
  1080.  
  1081.            This will load First Name and Surname to the correct fields in
  1082.            the data base and set the remaining fields to blank.
  1083.  
  1084.  
  1085. Print - Print Displayed Records
  1086.  
  1087.     Prints the records currently displayed on the screen. This will be a
  1088.     single record for a form display.
  1089.  
  1090. Print - Print all Records in Current Index
  1091.  
  1092.     Prints all records in the current index (or Sort or Selection).
  1093.  
  1094.     The fields printed and the style (form or list) of report is
  1095.     determined by the current view. The report details are saved with the
  1096.     view
  1097.  
  1098.     The print requester is displayed for you to enter formatting details
  1099.     for your report. If this is a new report, defaults will be taken from
  1100.     your current printer preferences.
  1101.  
  1102.     Your current printer preferences will be restored after the report is
  1103.     printed.
  1104.  
  1105.     The fields that can be entered are:
  1106.  
  1107.     Title
  1108.         Allows you to enter a title to be printed at the top of each page
  1109.         of your report. The title line will also show the current date at
  1110.         the left margin and the page number at the right margin. The title
  1111.         will be automatically centred.
  1112.  
  1113.         The title line is only printed if you enter a Title. Note that
  1114.         even a single space will print a blank title. Use CTRL-X to ensure
  1115.         that all characters are deleted.
  1116.  
  1117.     Left and Right Margins
  1118.         Allows you to temporarily override the current preferences
  1119.         settings. QuickFile will not print beyond the character position
  1120.         specified in the right margin.
  1121.  
  1122.     Lines/Page
  1123.         This controls the number of lines QuickFile will use on each page.
  1124.         The default is paper size minus 8 to provide a top and bottom
  1125.         margin.
  1126.  
  1127.         NB QuickFile issues a Form Feed when a new page is required. This
  1128.         depends on you setting the page height on your printer correctly,
  1129.         and may be a limitation with some printers. If you have a problem
  1130.         with this, let me know and I will look at using the preferences
  1131.         paper size.
  1132.  
  1133.         A value of zero will suppress the report title and page breaks.
  1134.  
  1135.     Print Pitch.
  1136.         This button operates like a WB2 cycle gadget. Each time you press
  1137.         it, it displays the next value from the following
  1138.  
  1139.             PICA    (10 cpi)
  1140.             ELITE   (12 cpi)
  1141.             FINE    (15 or 17 cpi) depending on your printer
  1142.  
  1143.     Lines Per Inch
  1144.         This button toggles between 6 and 8 lines per inch.
  1145.  
  1146.         If you are printing a form type view, a number of additional
  1147.         fields are displayed which allow you to print the form in multiple
  1148.         columns such as multi-column address labels. See Label printing
  1149.         below for full details.
  1150.  
  1151.         Press the OK button to start printing or the cancel button to
  1152.         cancel any changes you have entered.
  1153.  
  1154.         Saving the view will save all of your report settings.
  1155.  
  1156.   LABEL Printing
  1157.  
  1158.     Label printing is available for FORM type views only. You will
  1159.     normally define a special view as follows:
  1160.  
  1161.     Create a new view using the New View menu item, or load a suitable
  1162.     view.
  1163.  
  1164.     Set Field Labels for the view to "No".
  1165.  
  1166.     Arrange the fields in the top left hand corner of the FORM screen to
  1167.     match the desired label format.
  1168.  
  1169.     Select print and use the following fields in the print requester to
  1170.     control your label format.
  1171.  
  1172.     Labels Across
  1173.         This specifies the number of labels to print across the page
  1174.  
  1175.     Label Width
  1176.         This specifies the width of each label. One additional space will
  1177.         be allowed between labels. If you want to print labels further
  1178.         apart, increase this value.
  1179.  
  1180.     Labels Down
  1181.         This specifies the number of labels to print down the page. This
  1182.         number of labels will print in each column, before the next column
  1183.         is filled. For example 3 across and 4 down will print in the
  1184.         following sequence:
  1185.  
  1186.                 1       5       9
  1187.                 2       6      10
  1188.                 3       7      11
  1189.                 4       8      12
  1190.                 13
  1191.                 14  etc
  1192.  
  1193.     Label Height
  1194.         This is the height of each label in lines. An additional blank
  1195.         line will be printed between each label. The default is the number
  1196.         of lines in the form.
  1197.  
  1198.         You will probably want to set Lines Per Page to zero to suppress
  1199.         page breaks as well.
  1200.  
  1201.         If you are printing a single column of labels only, you can leave
  1202.         all of the above fields blank and use the number of lines in the
  1203.         form to determine the label height.
  1204.  
  1205.  
  1206. Options -  About
  1207.  
  1208.  
  1209.     Tells you about QuickFile. If it is a registered copy, the name of the
  1210.     registered user is displayed.
  1211.  
  1212.  
  1213. Options - Buffers
  1214.  
  1215.     This displays the number of ram buffers allowed for the file and
  1216.     allows you to change it temporarily. The items shown are:
  1217.  
  1218.     Blocks in file.
  1219.         The size of the current file expressed in blocks. This gives the
  1220.         number of buffers required to hold the whole file in memory.
  1221.  
  1222.     Buffers in use.
  1223.         The number of ram buffers currently allocated. This starts at 1
  1224.         when you open a file.
  1225.  
  1226.     Buffer size.
  1227.         Gives the amount of ram required for each buffer allocated.
  1228.  
  1229.     Maximum buffers.
  1230.         The maximum number of buffers that QuickFile will use. This can be
  1231.         changed to alter the number to be used for the current session.
  1232.         The next time you open the file, the maximum will revert to the
  1233.         number specified in the file definition.
  1234.  
  1235.         To permanently change the maximum number of buffers, use the
  1236.         QFDefine program.
  1237.  
  1238.  
  1239. =========== DEFINING FILES ========================
  1240.  
  1241. The file definition is now in a separate program called QFDefine. While
  1242. this may not be as convenient, it keeps the main program smaller. This is
  1243. mainly for my benefit when compiling and linking as I only have a floppy
  1244. based, 1 meg A500.
  1245.  
  1246. To start the program from workbench, click on the QFDefine icon. To start
  1247. it from the CLI type the path and name.
  1248.  
  1249. You can change just about everything in a file definition, except the
  1250. block size, even after you have loaded data to the file. You can change
  1251. field names, types and lengths. You can add or delete fields, and add or
  1252. delete indexes. Caution should be used when changing the type for fields
  1253. that contain data.
  1254.  
  1255. WARNING: Deleting a field makes its data inaccessible, even if you
  1256.        re-add the same field. If you accidentally delete a field, reload
  1257.        the definition without saving your changes and start your changes
  1258.        again.
  1259.  
  1260. =========== File Details ============
  1261.  
  1262. The file details are shown in the box in the top left of the QFDefine
  1263. window
  1264.  
  1265. Block Size
  1266.   QuickFile does not read and write single records at a time, but builds
  1267.   them into blocks. This reduces the number of disk reads and writes
  1268.   required. Around 2000 seems to give good results. The only way to change
  1269.   block size is to export the whole file, define a new data base and use
  1270.   import to recreate your file. Block size must be larger than the maximum
  1271.   record size plus free space, plus some space for control fields (2 bytes
  1272.   per field plus 2 bytes for the record length).
  1273.  
  1274. Free Space
  1275.   Specifies the amount of free space to be left in each block to allow for
  1276.   records to expand. As QuickFile only stores the actual data entered (not
  1277.   trailing blanks), additional space is required if a change makes a field
  1278.   longer. 100 seems to work OK. Records are moved to another block if
  1279.   necessary, so this is not critical.
  1280.  
  1281. Buffers
  1282.   This is the maximum number of buffers QuickFile will use for holding
  1283.   blocks of records in memory. Unless you have very large files or are
  1284.   short of memory, use a large figure such as 100.  QuickFile will never
  1285.   use more buffers than are required for the whole file.
  1286.  
  1287.   The more of the file in memory, the faster QuickFile works. The memory
  1288.   used is approximately (number of buffers * buffer size).
  1289.  
  1290. =========== Fields =====================
  1291.  
  1292. Use the QFDefine program to define or change fields.
  1293.  
  1294. The fields defined so far are listed in the box at the right of the
  1295. window.
  1296.  
  1297. Use the Add button to add a field. A requester will appear for the field
  1298. details. If a field is highlighted when you press add, the new field will
  1299. be added before the highlighted field, otherwise it is added to the end of
  1300. the list.
  1301.  
  1302. To change or delete fields, click on the field, then press the appropriate
  1303. button. A requester will appear for you to make changes or to confirm the
  1304. deletion.
  1305.  
  1306. The Field Requester contains the following fields
  1307.  
  1308.   Name string gadget
  1309.   Enter a name of up to 12 characters for the field.
  1310.  
  1311.   Length
  1312.   Enter the required length. 60 characters is a practical maximum length
  1313.   as no left and right scrolling is provided and more characters cannot be
  1314.   displayed. (You can scroll within fields on the update screen, but this
  1315.   is pretty tedious). The maximum is 250. The minimum length of a date
  1316.   field is 11 characters.
  1317.  
  1318.   Space is used only for the number of characters entered in each record,
  1319.   not for the maximum field length. In fact, if a field is empty it takes
  1320.   up no space at all.
  1321.  
  1322.   Type button
  1323.   This cycles around the available field types. Choose from character,
  1324.   date, integer or number (real). See Field Types below for more detail.
  1325.  
  1326. All of these values can be changed at any time without any unexpected
  1327. effects. If you reduce the length of a field, excess data is only
  1328. discarded from records as they are updated. Increasing the field length
  1329. will restore the old data except for records you have changed. Note that
  1330. reorganising will reformat ALL records.
  1331.  
  1332.  
  1333. ============= Field Types ==============
  1334.  
  1335. Character
  1336.   This the usual character string. You should probably avoid double quote
  1337.   characters as you may need these for delimiters when exporting data.
  1338.  
  1339. Date
  1340.   These have a minimum length of 11 characters and are always entered as
  1341.   day/month/year.
  1342.  
  1343.   The separator can be any of /-. or a space.
  1344.  
  1345.   Month can be entered as a number or a three character name
  1346.  
  1347.   Year can be entered as two or four digits. If two digits are used, a
  1348.   number greater than 50 is assumed to be this century, 50 or less, the
  1349.   next century.
  1350.  
  1351.      eg. 3/6/94   is interpreted as 03-Jun-1994
  1352.          1-aug-10 is interpreted as 01-Aug-2010
  1353.  
  1354.   Leading zeroes can be omitted.
  1355.  
  1356.   Dates are always displayed in the format 14-Apr-1993.
  1357.  
  1358.   The following are valid dates
  1359.            03/08/93  3-8-93  3.aug.93  03 aug 1993
  1360.  
  1361. Integer
  1362.   Whole number, no decimals. These are displayed right justified.
  1363.  
  1364. Number.
  1365.   Real numbers with decimals. Numbers are displayed right justified, but
  1366.   are not reformatted after you enter then. If you want decimal points to
  1367.   line up, you will have to enter the same number of decimal places in
  1368.   each record.
  1369.  
  1370. ============ Defining Indexes ================
  1371.  
  1372. Use the QFDefine program to define or change index field definitions.
  1373.  
  1374. You must define at least one index to be used for sequencing your records,
  1375. and quickly locating records. If you are not sure, pick any field that
  1376. will give a useful sequence, such as surname, title etc. Each index can
  1377. use a number of fields to give precise control of sequence.
  1378.  
  1379. If you change an index on an existing file, it will be rebuilt the next
  1380. time you open the file.
  1381.  
  1382. Insert Button
  1383.    Pressing this brings up the Define Index requester. You must give
  1384.    the index a name (up to 8 characters) and select the fields to be used.
  1385.    You can use a portion of a long field for an index by changing the
  1386.    default length in the field requester. This will reduce sort storage
  1387.    requirements when rebuilding indexes.
  1388.  
  1389. Modify Button
  1390.    Click on an index to highlight it before pressing this button. Displays
  1391.    the Define Index requester for you to change the fields.
  1392.  
  1393. Delete Button
  1394.    Click on an index to highlight it before pressing this button. Displays
  1395.    a requester showing the fields in the index. Press OK to delete the
  1396.    index, press cancel if you have changed your mind.
  1397.  
  1398. You can have any number of indexes but you should limit yourself to those
  1399. you are going to use regularly. I find it difficult to see how more than 2
  1400. or 3 would be useful, particularly as sorting is quite fast.
  1401.  
  1402. Indexes are maintained automatically as you add, modify and delete records
  1403. on your file so they reduce the need for sorting and resorting.
  1404.  
  1405.  
  1406. ============ File Types =================
  1407.  
  1408.    FILES
  1409.  
  1410.    QuickFile uses four types of file distinguished by extension. These are
  1411.    not text files and cannot be edited with most text editors. Using a hex
  1412.    editor will probably corrupt the file. YOU HAVE BEEN WARNED.
  1413.  
  1414.    The DEFINITION FILE has no extension. This is the name you enter when
  1415.    specifying a file name for QuickFile.
  1416.  
  1417.    The DATA FILE has an extension of .Data.
  1418.  
  1419.    INDEX FILES have an extension of .nameX where 'name' is the name of the
  1420.    index as specified in the file definition.
  1421.  
  1422.    VIEW files usually have an extension of .View, but this is not
  1423.    essential.
  1424.  
  1425.  
  1426. ============ Possible Problems ===================
  1427.  
  1428. If you are prevented from saving your changes by a program error, system
  1429. or power failure, your file will probably be in an inconsistent state.
  1430.  
  1431. 1.  The updated indexes will not have been written to disk. This is only
  1432.     done if you Save, Exit or Close the file. Each index must be rebuilt.
  1433.     See "Index doesn't match data file" below.
  1434.  
  1435. 2.  Changed records may not have been written to disk and will have to be
  1436.     re-done. Note that because of the way buffering works, changes are not
  1437.     necessarily written to disk in the order they are done.
  1438.  
  1439.  
  1440.  
  1441. INDEX DOESN'T MATCH DATA FILE
  1442.  
  1443. It is possible for an index and data file to get out of synchronisation.
  1444. This can be caused by not closing a file properly, typically because of a
  1445. guru or power loss with a file open.
  1446.  
  1447. If you suspect an index has been corrupted in some way, you can delete the
  1448. index file (called filename.indnameX).  When you next open the file, the
  1449. index will be rebuilt.  This is indicated by a message such as "getblock:
  1450. Block not found" being displayed in the Console window.
  1451.  
  1452. You can also rebuild an index by selecting the Rebuild Index item from
  1453. the tools menu.
  1454.  
  1455.  
  1456. BUGS
  1457.  
  1458. You can give several fields the same name. If you do this you will get
  1459. some odd effects but it should not cause major problems.
  1460.  
  1461. Error handling is still less than adequate. an Out of Memory condition
  1462. should display a requester advising you to free some memory. In some cases
  1463. there may not be enough memory to display the requester, and the program
  1464. will stop with an error message.
  1465.  
  1466. Disk errors will also cause an immediate termination.
  1467.  
  1468. The program has been reasonably tested, but only on my A500. Some bugs
  1469. refuse to show up until you hit exactly the right combination of
  1470. conditions, so please let me know of any problems you find.
  1471.  
  1472. Sending a copy of your database and the version of the program you are
  1473. using together with instructions on how to duplicate the problem will
  1474. help me to fix the problem.
  1475.  
  1476.  
  1477. ============== Limits ==================
  1478.  
  1479. QuickFile is still limited in some areas. These may be enhanced in future.
  1480.  
  1481. Calculations
  1482.  
  1483.     There is no facility for totalling, or calculating a column based on
  1484.     other columns.
  1485.  
  1486. Field Length
  1487.  
  1488.     While up to 250 characters are allowed per field, this is not very
  1489.     useful as each field is limited to one line.
  1490.  
  1491. Number of Records per File
  1492.  
  1493.     The theoretical limit is currently 65,535. In practice it will be much
  1494.     less because of the indexing technique which will run out of either
  1495.     memory or processor speed. Each index requires a contiguous area of
  1496.     ram 4(n + 200) bytes in size, where n is the number of records in the
  1497.     file. The sort technique also limits the size of the file.  The sort
  1498.     loads all sort keys to ram and also requires 8 bytes per record in one
  1499.     contiguous area.
  1500.  
  1501.     My largest file is about 2800 records (115 chars per record) and it is
  1502.     fine.  The largest file I know of is almost 7000 records and works
  1503.     well even on my 1meg A500. A realistic maximum is probably in the
  1504.     order of 10,000 to 20,000.
  1505.  
  1506.     While files can be larger than available memory, operation is much
  1507.     faster if you set the number of buffers large enough to contain the
  1508.     whole file.
  1509.  
  1510.     I would be interested to hear from anyone using it with larger files.
  1511.  
  1512.  
  1513. Number of fields per record
  1514.  
  1515.     250. But I got bored at about 60, so you take your chances if you want
  1516.     to try more.
  1517.  
  1518. Maximum characters per field
  1519.  
  1520.     250
  1521.  
  1522. Number of indexes
  1523.  
  1524.   More than you should ever need to use.
  1525.  
  1526.  
  1527. =============== Additional information ===============
  1528.  
  1529. Block Size
  1530.  
  1531.     QuickFile reads and writes records in groups called blocks. This
  1532.     improves performance as fewer reads and writes are required. Free
  1533.     space is also left in each block to allow records in the block to
  1534.     expand without having to move them on disk.
  1535.  
  1536.     Block size is specified when a file is defined and cannot be changed
  1537.     later. Block size must be larger than record size, but is not
  1538.     otherwise critical. Typical values are in the range of 1000 to 4000
  1539.     bytes.
  1540.  
  1541.  
  1542. Buffers
  1543.  
  1544.     A buffer is a chunk of ram used to hold a block of records. QuickFile
  1545.     will try to keep as many blocks in ram as possible to reduce disk
  1546.     accesses. Performance is much better, particularly with floppies, if
  1547.     records can be held in ram rather than having to be read from disk.
  1548.  
  1549.     You can specify the number of blocks to be used for a file with the
  1550.     QFDefine program. You can override the number temporarily by selecting
  1551.     the Buffers item from the options menu.
  1552.  
  1553.     Generally you should try to have the whole file in memory. Limit the
  1554.     number of buffers if your ram is limited or you want to reserve ram
  1555.     for another application.
  1556.  
  1557.     Buffering combines the speed of a memory based database with the
  1558.     capacity of a random access.
  1559.  
  1560.